// #include<iostream>
// #include<string>
// #include<vector>
// #include <list>
// #include<algorithm>
//
// using namespace  std;
//
// //迭代器
// //仿函数
// //函数适配器
//
// int main()
// {
//
//     vector<int> value = {1,2,3,4,5};
//     for (auto& v:value)
//     {
//         cout << v << endl;
//     }
//
//     vector<int>::iterator it = value.begin();
//     vector<int>::const_iterator cit = value.cbegin();
//     vector<int>::reverse_iterator rit = value.rbegin();
//     vector<int>::const_reverse_iterator crit  = value.crbegin();
//
//     for (it = value.begin();it!=value.end();it++)
//     {
//         cout << *it << endl;
//     }
//     cout << endl;
//    // it = it +1;
//
//     list<int> data = {1,2,3,4,5};
//     list<int>::iterator lit = data.begin();
//
//     advance(lit,1);
//     cout << *lit << endl;
//
//     // distance(value.begin()+3,value.begin()+2);
//     //流型迭代器
//     //构造方式
//     //操作实际含义
//
//     //输出流型迭代器
//     ostream_iterator<int> ostream1(cout);
//     //等效于把数据打印到屏幕上
//     ostream1 = 123;
//     ostream_iterator<int>ostream2(cout,",");
//     ostream2 = 456;
//
//     cout << endl;
//
//     vector<int> test = {1,2,3,4,5};
//     copy(test.begin(),test.end(),ostream_iterator<int>(cout," "));
//     cout<< endl;
//
//     //输入流型迭代器
//     //无参构造
//     istream_iterator<int> eof;//无参构造是错误流对象
//
//     istream_iterator<int> in(cin);//操作输入流 *号运算 代码从输入流获取数据
//     vector<int> input;
//     while (in!=eof)
//     {
//         input.push_back(*in);
//         in++;
//     }
//     for (auto& v:input)
//     {
//         cout << v<< " ";
//     }
//
//     cout << endl;
//
//
//
//
//     return 0;
// }